const Koa = require("koa");
const app = new Koa();
const Router = require("koa-router");
const router = new Router();

router.get("/zks", (ctx) => {
  ctx.body = "hello koa-router";
});
// 不论位置  express的中间件会阻止

app.use(async (ctx, next) => {
  try {
    await next();

    if (ctx.status === 404) {
      ctx.body = "404";
      ctx.status = 404;
    }
  } catch (err) {
    ctx.status = err.status || 500;
    ctx.body = {
      message: err.message || "服务器错误",
      status: ctx.status,
    };
  }
});

app.use(router.routes()).use(router.allowedMethods());
app.listen(1165);

///const Koa = require('koa');

// 中间件执行顺序
// 从打印就过来看，每个函数先执行 next 前面的代码，再执行其他函数代码
// ，其他执行完成后，再回来执行 next 后面的代码，这就是我们讲的洋葱模型。

const PORT = 3000;

app.use(async (ctx, next) => {
  console.log(1);
  await next();
  console.log(1);
});

app.use(async (ctx, next) => {
  console.log(2);
  await next();
  console.log(2);
});

app.use(async (ctx, next) => {
  console.log(3);
});

app.listen(PORT);
console.log(`http://localhost:3000`);
